from zhipuai import ZhipuAI


api_key = "4956db3da95d43eab77efa6937882679.Xm27NhBWZPJE3ORb"
client = ZhipuAI(api_key=api_key)

with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\资料\my_mail数据字典.md","r",encoding="utf8") as f:
    md_content = f.read()

system_content1 = "为了更好编写满足用户的需求的python函数，我们需要先识别用户需求中的变量，以作为python函数的参数，需要注意的是，当前编写的函数中涉及到的邮件收发查阅等功能，都是通过python来实现的，同时只需要输出这些变量即可，禁止输出其他任何信息，请严格按照示例进行输出"

system_content2 = "为了更好编写满足用户的需求，我们需要先识别用户需求中的变量，只需要输出这些变量即可，禁止输出其他任何信息，请严格按照示例进行输出"

input1 = "请帮我查询mailbox邮箱里的最后一封邮件内容."
pi1 = "当前需求中可以作为变量的是:1.查看谁的邮箱."

input2 = "请帮我给西门吹雪发一封邮件，请他明天早上9点半来我办公室开会，商讨下下半年的技术开发计划."
pi2 = "当前需求中可以作为变量的是:1.发送邮件的对象;2.发送邮件的主题;3.邮件的具体内容."

input3 = "请查询下我的邮箱里是否有来自陆小凤的未读邮件，并解读最近一封未读邮件的内容."

messages = [{"role":"system","content":system_content2},
            # {"role":"system","content":md_content},
            {"role":"user","name":"exampl1_user","content":input1},
            {"role":"assistant","name":"exampl1_assistant","content":pi1},
            {"role":"user","name":"exampl2_user","content":input2},
             {"role":"assistant","name":"exampl2_assistant","content":pi2},
            {"role":"user","content":input3}]

response_pi = client.chat.completions.create(model="glm-4",
                                             messages=messages)
# print(response_pi.choices[0].message.content)

pi3 = response_pi.choices[0].message.content

get_email_input = input1+pi1
get_email_out = "请帮我编写一个python函数，用于查看我的mailbox邮箱中最后一封邮件信息，函数要求如下：\
                 1.函数参数userId，userId是字符串参数，默认情况下取值为'me'，表示查看我的邮件；\
                 2.函数返回结果是一个包含最后一封邮件信息的对象，返回结果本身必须是一个json格式对象；\
                 3.请将全部功能封装在一个函数内；\
                 4.请在函数编写过程中，在函数内部加入中文编写的详细的函数说明文档，用于说明函数功能、函数参数情况以及函数返回结果等信息；"

send_email_input = input2+pi2
send_email_out =  "请帮我编写一个python函数，用于给叶孤城发送邮件，请他明天早上9点半来我办公室开会，商量下半年技术开发计划，函数要求如下：\
                  1.函数参数to、subject和snippet，三个参数都是字符串类型，其中to表示发送邮件对象，subject表示邮件主题，snippet表示邮件具体内容；\
                  2.函数返回结果是当前邮件发送状态，返回结果本身必须是一个json格式对象；\
                  3.请将全部功能封装在一个函数内；\
                  4.请在函数编写过程中，在函数内部加入中文编写的详细的函数说明文档，用于说明函数功能、函数参数情况以及函数返回结果等信息；"

user_content = input3+pi3

messages_CM = [{"role":"system","content":f"最后输出的是一个说明，举个例子，输出的格式如下:{get_email_out}"},
               {"role":"system","content":"请模仿下列对话给出的风格，基于我的问题，把我的问题转换为一个说明。注意，不需要额外的输出,只需要输出这个说明即可，禁止输出其他任何信息，请严格按照示例进行输出"},

               {"role": "user", "name": "example1_user", "content": get_email_input},
               {"role": "assistant", "name": "example1_assistant", "content": get_email_out},
               {"role": "user", "name": "example2_user", "content": send_email_input},
               {"role": "assistant", "name": "example2_assistant", "content": send_email_out},
               {"role": "user", "name": "example_user", "content": user_content}]

# print(message_cm)

response_pi3 = client.chat.completions.create(model="glm-4",
                                              messages=messages_CM)

#print(response_pi3.choices[0].message.content)
function_description = response_pi3.choices[0].message.content

with open(r"E:\dev\aistudy\pythonProject\testAi\get_latest_email.py","r",encoding="utf8") as f:
    latest_email_function = f.read()

system_content3 = "你是一个智能助手，善于基于用户的需求，通过开发函数解决问题，函数参数必须是字符串类型的参数，返回结果必须是json格式的字符串对象"

message_func = [{"role":"system","content":md_content},
                {"role":"system","content":system_content3},
                {"role":"user","content":get_email_out},
                {"role":"assistant","content":latest_email_function},
                {"role":"user","content":function_description}]

response_func = client.chat.completions.create(model="glm-4",
                                               messages=message_func)
print(response_func.choices[0].message.content)
